package main

import "fmt"

/*
定义：一个函数自己调用自己，就叫做递归函数
注意：递归函数需要有一个出口，逐渐向出口靠近，没有出口就会形成死循环。
*/
func main() {
	var sum int
	sum = getSum1(2)
	//当然数量够大的时候就会造成栈溢出：overflows
	sum1 := getSum1(100000000)
	fmt.Println(sum)
	fmt.Println(sum1)
}
func getSum1(n int) int {
	if n <= 1 {
		return 1
	}
	return getSum1(n-1) + n
}

//递推与回归
//先一点一点推进去，在从上面一点一点出结果，这就是递归
//当然也符合栈的特点
